function getSiteCfg() { 
    $.getJSON(
        "/api/tmpo/config_public/",
        function(json) {
            var val = 'POC: <a class="POCemail" href="mailto:' +
                      json.tmpo_poc_email + '">' +
                      json.tmpo_poc_name + '</a> ' +
                      'Phone: (' + json.tmpo_poc_phone.substr(0,3) + ') ' +
                      json.tmpo_poc_phone.substr(3,3) + '-' + 
                      json.tmpo_poc_phone.substr(6,4);
            $("span.POCemail").html(val);
            $.map($("#protoPOCHTML p"), function(n) {
                $(n).remove();
            });
            showPoc(json);         
        }
    ); 
}

function updatePOCConfig() {
    var form_data_update_POC_config = {	
        tmpo_poc_name: $("#tmpo_poc_name").val(),
        tmpo_poc_email: $("#tmpo_poc_email").val(),
        tmpo_poc_phone: $("#tmpo_poc_phone_area").val()+
            $("#tmpo_poc_phone_prefix").val()+
            $("#tmpo_poc_phone_suffix").val()
    };
    $.ajax({
        url: '/api/tmpo/config_public/',
        type: "POST",
        data: form_data_update_POC_config,
        success: function() {
            console.debug("success");
        },
        complete: function() {
            console.debug("complete");
            getSiteCfg();
        },
        error: function(){
            console.debug("fail");
        }
    });    
}

var validateForm = function (id) {
    var error_count = 0;
    hideMessages(id.toUpperCase());
    $("#proto"+id.toUpperCase()+"HTML "+
        "td[class='tableErrorColor']").removeClass("tableErrorColor");
    $("#proto"+id.toUpperCase()+"HTML "+
        "span[class='errorMessage']").remove();
    $("#proto"+id.toUpperCase()+"HTML "+
        "input[class='formError']").removeClass('formError');
    var req_fields_poc = [
        'tmpo_poc_name',
        'tmpo_poc_email',
        'tmpo_poc_phone_area',
        'tmpo_poc_phone_prefix',
        'tmpo_poc_phone_suffix'
    ];
    $.map( req_fields_poc , function(field) {
        if( !$("#"+field).val()) {
            error_count++;
            $("#"+field).parent().append('<span class="errorMessage">'+
                'Please complete required field.</span>');
            $("#"+field).parent().addClass("tableErrorColor");
            $("#"+field).addClass("formError");
        }
    });
    if ( !validPhoneThree($("#tmpo_poc_phone_area").val())) {
            error_count++;
            $("#phone_error").remove();
            $("#tmpo_poc_phone_area").parent().append(
                '<span class="errorMessage" id="phone_error">'+
                'Please enter a 10-digit telephone number. '+
                'Example: 123-456-7890.</span>');
            $("#tmpo_poc_phone_area").parent().addClass("tableErrorColor");
            $("#tmpo_poc_phone_area").addClass("formError");
    
    }
    if ( !validPhoneThree($("#tmpo_poc_phone_prefix").val())) {
            error_count++;
            $("#phone_error").remove();
            $("#tmpo_poc_phone_prefix").parent().append(
                '<span class="errorMessage" id="phone_error">'+
                'Please enter a 10-digit telephone number. '+
                'Example: 123-456-7890.</span>');
            $("#tmpo_poc_phone_prefix").parent().addClass("tableErrorColor");
            $("#tmpo_poc_phone_prefix").addClass("formError");
    
    }
    if ( !validPhoneFour( $("#tmpo_poc_phone_suffix").val() ) ) {
        error_count++;
            $("#phone_error").remove();
            $("#tmpo_poc_phone_suffix").parent().append(
                '<span class="errorMessage" id="phone_error">'+
                'Please enter a 10-digit telephone number. '+
                'Example: 123-456-7890.</span>');
            $("#tmpo_poc_phone_suffix").parent().addClass("tableErrorColor");
            $("#tmpo_poc_phone_suffix").addClass("formError");
    }
    if(error_count){
        $("#proto"+id.toUpperCase()+"HTML "+
            "span[class='generalErrorMessage']").show();
    }else {
        $("#proto"+id.toUpperCase()+"HTML "+
            "span[class='waitMessage']").show();
        return true;
    }
};

var hideMessages = function(id) {
    if (id){
        $("#proto"+id.toUpperCase()+"HTML "+
            "span[class='waitMessage']").hide();
        $("#proto"+id.toUpperCase()+"HTML "+
            "span[class='generalErrorMessage']").hide();    
    }else{
        $("span[class='waitMessage']").hide();
        $("span[class='generalErrorMessage']").hide();
    }
};

var fillProtoEditHTML = function(json, section) {
    $.each(json, function(n,i) {
        if(n != 'tmpo_'+section+'_phone') {
            $("#"+n).val(i); 
        }else{
            $("#"+n+"_area").val(i.substr(0,3));
            $("#"+n+"_prefix").val(i.substr(3,3)); 
            $("#"+n+"_suffix").val(i.substr(6,4)); 
        }  
    });    
};

var resetProtoHTML = function(section) {
    $.map($("#proto"+section+"HTML p"), function(n) {
        $(n).remove();
    });
};

var showPocEdit = function(json) {
    resetProtoHTML("POC");
    $("#button_edit_poc").after($("#protoEditPOCHTML").html());
    fillProtoEditHTML(json, "poc");     
    $("#button_cancel_poc").bind("click", function() {
       hideMessages('POC');
       getSiteCfg();
       return false;
    });
    $("#button_save_poc").bind("click", function() {
        $("#button_save_poc").after();
        ( validateForm( this.id.substr(12,3) ) ) ? updatePOCConfig() : '' ;   
        return false;
    });
};

var showPoc = function(json) {
    var json_obj = { 
        0:json.tmpo_poc_name, 
        1:json.tmpo_poc_email, 
        2:json.tmpo_poc_phone
    };
    $.each(json_obj, function(n,i) {
        $("#protoShowPOCHTML p:eq("+n+") span[class='fieldData']").html(i);
    });
    $("#button_edit_poc").after($("#protoShowPOCHTML").html());
    $("#button_edit_poc").bind("click", function() {
        showPocEdit(json);
        return false;
    });        
};

$(function() {
    Functional.install();
    getSiteCfg();
    hideMessages();
    $("#protoPOCHTML").show();
});
